package com.tensai.study.java.basic.regex;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 后向引用
 * <pre>用于重复搜索前面某个分组匹配的文本。例如，\1代表分组1匹配的文本</pre>
 *
 * @author Tensai
 */
@Slf4j
public class BackIncludeTest {

	@Test
	public void test() {
		// 按指定模式在字符串查找
		String line = "go go, kitty kitty";
		// \1指定匹配分组
		// \b(?<Word>\w+)\b\s+\b\k<Word>\b 效果相同
		// \1 == \k<Word> 分组捕获
		String pattern = "\\b(\\w+)\\b\\s+\\b\\1\\b";

		// 创建 Pattern 对象
		Pattern r = Pattern.compile(pattern);

		// 现在创建 matcher 对象
		Matcher m = r.matcher(line);
		while (m.find()) {
			log.info("Found value: " + m.group(0));
		}
	}
}
